package com.system.boss.openssl.model;

import java.io.Serializable;
import java.util.Date;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import com.system.boss.openssl.enums.SysOpensslCerStatusEnum;
import com.system.boss.openssl.enums.SysOpensslCerTypeEnum;

import io.swagger.v3.oas.annotations.media.Schema;

public class SysOpenssl implements Serializable {
    @Schema(description = "记录ID")
    private Long cerId;

    @Schema(description = "记录父ID")
    private Long cerPid;

    @Schema(description = "资源号，同个资源号为一组")
    @Size(max = 40,message = "resourceId字段超过字符最大长度限制，最大长度为：40")
	@NotBlank(message = "resourceId-资源号，同个资源号为一组字段必填")
    private String resourceId;

    @Schema(description = "证书路径")
    @Size(max = 300,message = "cerXpath字段超过字符最大长度限制，最大长度为：300")
    private String cerXpath;

    @Schema(description = "证书指纹")
    @Size(max = 255,message = "cerFinger字段超过字符最大长度限制，最大长度为：255")
    private String cerFinger;

    @Schema(description = "证书序列号")
    @Size(max = 50,message = "cerSerial字段超过字符最大长度限制，最大长度为：50")
    private String cerSerial;

    @Schema(description = "通用名如网址、客户姓名等（CN）")
    @Size(max = 100,message = "commonName字段超过字符最大长度限制，最大长度为：100")
	@NotBlank(message = "commonName-通用名如网址、客户姓名等（CN）字段必填")
    private String commonName;

    @Schema(description = "国家（C）")
    @Size(max = 2,message = "countryName字段超过字符最大长度限制，最大长度为：2")
	@NotBlank(message = "countryName-国家（C）字段必填")
    private String countryName;

    @Schema(description = "省份（ST）")
    @Size(max = 10,message = "stateOrProvinceName字段超过字符最大长度限制，最大长度为：10")
    private String stateOrProvinceName;

    @Schema(description = "城市（L）")
    @Size(max = 10,message = "localityName字段超过字符最大长度限制，最大长度为：10")
    private String localityName;

    @Schema(description = "街道地址（STREET）")
    @Size(max = 100,message = "streetAddress字段超过字符最大长度限制，最大长度为：100")
    private String streetAddress;

    @Schema(description = "公司名称（O）")
    @Size(max = 100,message = "company字段超过字符最大长度限制，最大长度为：100")
    private String company;

    @Schema(description = "部门名称（OU）")
    @Size(max = 100,message = "department字段超过字符最大长度限制，最大长度为：100")
    private String department;

    @Schema(description = "友好名称（MS WINDOWS使用）")
    @Size(max = 50,message = "friendlyName字段超过字符最大长度限制，最大长度为：50")
    private String friendlyName;

    @Schema(description = "证书文件相对路径")
    @Size(max = 200,message = "cerPath字段超过字符最大长度限制，最大长度为：200")
	@NotBlank(message = "cerPath-证书文件相对路径字段必填")
    private String cerPath;

    @Schema(description = "私钥文件相对路径")
    @Size(max = 200,message = "keyPath字段超过字符最大长度限制，最大长度为：200")
	@NotBlank(message = "keyPath-私钥文件相对路径字段必填")
    private String keyPath;

    @Schema(description = "PKCS12格式文件路径")
    @Size(max = 200,message = "p12Path字段超过字符最大长度限制，最大长度为：200")
	@NotBlank(message = "p12Path-PKCS12格式文件路径字段必填")
    private String p12Path;

    @Schema(description = "去密码的私钥文件相对路径")
    @Size(max = 200,message = "keyWithoutPasswdPath字段超过字符最大长度限制，最大长度为：200")
    private String keyWithoutPasswdPath;

    @Schema(description = "证书密码")
    @Size(max = 20,message = "cerPasswd字段超过字符最大长度限制，最大长度为：20")
	@NotBlank(message = "cerPasswd-证书密码字段必填")
    private String cerPasswd;

    @Schema(description = "证书类型，根CA/次一级CA/吊销列表/用户证书")
    @Size(max = 6,message = "cerType字段超过字符最大长度限制，最大长度为：6")
	@NotBlank(message = "cerType-证书类型，根CA/次一级CA/吊销列表/用户证书字段必填")
    private SysOpensslCerTypeEnum cerType;

    @Schema(description = "证书状态，正常/被吊销/证书生成失败")
    @Size(max = 7,message = "cerStatus字段超过字符最大长度限制，最大长度为：7")
	@NotBlank(message = "cerStatus-证书状态，正常/被吊销/证书生成失败字段必填")
    private SysOpensslCerStatusEnum cerStatus;

    @Schema(description = "证书颁发时间")
    private Date issueTime;

    @Schema(description = "证书有效时长")
    private Integer days;

    @Schema(description = "证书有效期开始日期")
    private Date startTime;

    @Schema(description = "证书有效期截止日期")
    private Date endTime;

    @Schema(description = "工作目录")
    @Size(max = 255,message = "workDir字段超过字符最大长度限制，最大长度为：255")
    private String workDir;

    @Schema(description = "记录创建时间")
    private Date createTime;

    @Schema(description = "记录更新时间")
    private Date updateTime;

    /**
     * This field was generated by MyBatis Generator.
     * This field corresponds to the database table sys_openssl
     *
     * @mbg.generated
     */
    private static final long serialVersionUID = 1L;

    /**
     * 获取记录ID
     * @return 记录ID
     */
    public Long getCerId() {
        return cerId;
    }

    /**
     * 设置记录ID
     * @param cerId 记录ID
     */
    public void setCerId(Long cerId) {
        this.cerId = cerId;
    }

    /**
     * 获取记录父ID
     * @return 记录父ID
     */
    public Long getCerPid() {
        return cerPid;
    }

    /**
     * 设置记录父ID
     * @param cerPid 记录父ID
     */
    public void setCerPid(Long cerPid) {
        this.cerPid = cerPid;
    }

    /**
     * 获取资源号，同个资源号为一组
     * @return 资源号，同个资源号为一组
     */
    public String getResourceId() {
        return resourceId;
    }

    /**
     * 设置资源号，同个资源号为一组
     * @param resourceId 资源号，同个资源号为一组
     */
    public void setResourceId(String resourceId) {
        this.resourceId = resourceId == null ? null : resourceId.trim();
    }

    /**
     * 获取证书路径
     * @return 证书路径
     */
    public String getCerXpath() {
        return cerXpath;
    }

    /**
     * 设置证书路径
     * @param cerXpath 证书路径
     */
    public void setCerXpath(String cerXpath) {
        this.cerXpath = cerXpath == null ? null : cerXpath.trim();
    }

    /**
     * 获取证书指纹
     * @return 证书指纹
     */
    public String getCerFinger() {
        return cerFinger;
    }

    /**
     * 设置证书指纹
     * @param cerFinger 证书指纹
     */
    public void setCerFinger(String cerFinger) {
        this.cerFinger = cerFinger == null ? null : cerFinger.trim();
    }

    /**
     * 获取证书序列号
     * @return 证书序列号
     */
    public String getCerSerial() {
        return cerSerial;
    }

    /**
     * 设置证书序列号
     * @param cerSerial 证书序列号
     */
    public void setCerSerial(String cerSerial) {
        this.cerSerial = cerSerial == null ? null : cerSerial.trim();
    }

    /**
     * 获取通用名如网址、客户姓名等（CN）
     * @return 通用名如网址、客户姓名等（CN）
     */
    public String getCommonName() {
        return commonName;
    }

    /**
     * 设置通用名如网址、客户姓名等（CN）
     * @param commonName 通用名如网址、客户姓名等（CN）
     */
    public void setCommonName(String commonName) {
        this.commonName = commonName == null ? null : commonName.trim();
    }

    /**
     * 获取国家（C）
     * @return 国家（C）
     */
    public String getCountryName() {
        return countryName;
    }

    /**
     * 设置国家（C）
     * @param countryName 国家（C）
     */
    public void setCountryName(String countryName) {
        this.countryName = countryName == null ? null : countryName.trim();
    }

    /**
     * 获取省份（ST）
     * @return 省份（ST）
     */
    public String getStateOrProvinceName() {
        return stateOrProvinceName;
    }

    /**
     * 设置省份（ST）
     * @param stateOrProvinceName 省份（ST）
     */
    public void setStateOrProvinceName(String stateOrProvinceName) {
        this.stateOrProvinceName = stateOrProvinceName == null ? null : stateOrProvinceName.trim();
    }

    /**
     * 获取城市（L）
     * @return 城市（L）
     */
    public String getLocalityName() {
        return localityName;
    }

    /**
     * 设置城市（L）
     * @param localityName 城市（L）
     */
    public void setLocalityName(String localityName) {
        this.localityName = localityName == null ? null : localityName.trim();
    }

    /**
     * 获取街道地址（STREET）
     * @return 街道地址（STREET）
     */
    public String getStreetAddress() {
        return streetAddress;
    }

    /**
     * 设置街道地址（STREET）
     * @param streetAddress 街道地址（STREET）
     */
    public void setStreetAddress(String streetAddress) {
        this.streetAddress = streetAddress == null ? null : streetAddress.trim();
    }

    /**
     * 获取公司名称（O）
     * @return 公司名称（O）
     */
    public String getCompany() {
        return company;
    }

    /**
     * 设置公司名称（O）
     * @param company 公司名称（O）
     */
    public void setCompany(String company) {
        this.company = company == null ? null : company.trim();
    }

    /**
     * 获取部门名称（OU）
     * @return 部门名称（OU）
     */
    public String getDepartment() {
        return department;
    }

    /**
     * 设置部门名称（OU）
     * @param department 部门名称（OU）
     */
    public void setDepartment(String department) {
        this.department = department == null ? null : department.trim();
    }

    /**
     * 获取友好名称（MS WINDOWS使用）
     * @return 友好名称（MS WINDOWS使用）
     */
    public String getFriendlyName() {
        return friendlyName;
    }

    /**
     * 设置友好名称（MS WINDOWS使用）
     * @param friendlyName 友好名称（MS WINDOWS使用）
     */
    public void setFriendlyName(String friendlyName) {
        this.friendlyName = friendlyName == null ? null : friendlyName.trim();
    }

    /**
     * 获取证书文件相对路径
     * @return 证书文件相对路径
     */
    public String getCerPath() {
        return cerPath;
    }

    /**
     * 设置证书文件相对路径
     * @param cerPath 证书文件相对路径
     */
    public void setCerPath(String cerPath) {
        this.cerPath = cerPath == null ? null : cerPath.trim();
    }

    /**
     * 获取私钥文件相对路径
     * @return 私钥文件相对路径
     */
    public String getKeyPath() {
        return keyPath;
    }

    /**
     * 设置私钥文件相对路径
     * @param keyPath 私钥文件相对路径
     */
    public void setKeyPath(String keyPath) {
        this.keyPath = keyPath == null ? null : keyPath.trim();
    }

    /**
     * 获取PKCS12格式文件路径
     * @return PKCS12格式文件路径
     */
    public String getP12Path() {
        return p12Path;
    }

    /**
     * 设置PKCS12格式文件路径
     * @param p12Path PKCS12格式文件路径
     */
    public void setP12Path(String p12Path) {
        this.p12Path = p12Path == null ? null : p12Path.trim();
    }

    /**
     * 获取去密码的私钥文件相对路径
     * @return 去密码的私钥文件相对路径
     */
    public String getKeyWithoutPasswdPath() {
        return keyWithoutPasswdPath;
    }

    /**
     * 设置去密码的私钥文件相对路径
     * @param keyWithoutPasswdPath 去密码的私钥文件相对路径
     */
    public void setKeyWithoutPasswdPath(String keyWithoutPasswdPath) {
        this.keyWithoutPasswdPath = keyWithoutPasswdPath == null ? null : keyWithoutPasswdPath.trim();
    }

    /**
     * 获取证书密码
     * @return 证书密码
     */
    public String getCerPasswd() {
        return cerPasswd;
    }

    /**
     * 设置证书密码
     * @param cerPasswd 证书密码
     */
    public void setCerPasswd(String cerPasswd) {
        this.cerPasswd = cerPasswd == null ? null : cerPasswd.trim();
    }

    /**
     * 获取证书类型，根CA/次一级CA/吊销列表/用户证书
     * @return 证书类型，根CA/次一级CA/吊销列表/用户证书
     */
    public SysOpensslCerTypeEnum getCerType() {
        return cerType;
    }

    /**
     * 设置证书类型，根CA/次一级CA/吊销列表/用户证书
     * @param cerType 证书类型，根CA/次一级CA/吊销列表/用户证书
     */
    public void setCerType(SysOpensslCerTypeEnum cerType) {
        this.cerType = cerType;
    }

    /**
     * 获取证书状态，正常/被吊销/证书生成失败
     * @return 证书状态，正常/被吊销/证书生成失败
     */
    public SysOpensslCerStatusEnum getCerStatus() {
        return cerStatus;
    }

    /**
     * 设置证书状态，正常/被吊销/证书生成失败
     * @param cerStatus 证书状态，正常/被吊销/证书生成失败
     */
    public void setCerStatus(SysOpensslCerStatusEnum cerStatus) {
        this.cerStatus = cerStatus;
    }

    /**
     * 获取证书颁发时间
     * @return 证书颁发时间
     */
    public Date getIssueTime() {
        return issueTime;
    }

    /**
     * 设置证书颁发时间
     * @param issueTime 证书颁发时间
     */
    public void setIssueTime(Date issueTime) {
        this.issueTime = issueTime;
    }

    /**
     * 获取证书有效时长
     * @return 证书有效时长
     */
    public Integer getDays() {
        return days;
    }

    /**
     * 设置证书有效时长
     * @param days 证书有效时长
     */
    public void setDays(Integer days) {
        this.days = days;
    }

    /**
     * 获取证书有效期开始日期
     * @return 证书有效期开始日期
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置证书有效期开始日期
     * @param startTime 证书有效期开始日期
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取证书有效期截止日期
     * @return 证书有效期截止日期
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * 设置证书有效期截止日期
     * @param endTime 证书有效期截止日期
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * 获取工作目录
     * @return 工作目录
     */
    public String getWorkDir() {
        return workDir;
    }

    /**
     * 设置工作目录
     * @param workDir 工作目录
     */
    public void setWorkDir(String workDir) {
        this.workDir = workDir == null ? null : workDir.trim();
    }

    /**
     * 获取记录创建时间
     * @return 记录创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置记录创建时间
     * @param createTime 记录创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取记录更新时间
     * @return 记录更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置记录更新时间
     * @param updateTime 记录更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table sys_openssl
     *
     * @mbg.generated
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", cerId=").append(cerId);
        sb.append(", cerPid=").append(cerPid);
        sb.append(", resourceId=").append(resourceId);
        sb.append(", cerXpath=").append(cerXpath);
        sb.append(", cerFinger=").append(cerFinger);
        sb.append(", cerSerial=").append(cerSerial);
        sb.append(", commonName=").append(commonName);
        sb.append(", countryName=").append(countryName);
        sb.append(", stateOrProvinceName=").append(stateOrProvinceName);
        sb.append(", localityName=").append(localityName);
        sb.append(", streetAddress=").append(streetAddress);
        sb.append(", company=").append(company);
        sb.append(", department=").append(department);
        sb.append(", friendlyName=").append(friendlyName);
        sb.append(", cerPath=").append(cerPath);
        sb.append(", keyPath=").append(keyPath);
        sb.append(", p12Path=").append(p12Path);
        sb.append(", keyWithoutPasswdPath=").append(keyWithoutPasswdPath);
        sb.append(", cerPasswd=").append(cerPasswd);
        sb.append(", cerType=").append(cerType);
        sb.append(", cerStatus=").append(cerStatus);
        sb.append(", issueTime=").append(issueTime);
        sb.append(", days=").append(days);
        sb.append(", startTime=").append(startTime);
        sb.append(", endTime=").append(endTime);
        sb.append(", workDir=").append(workDir);
        sb.append(", createTime=").append(createTime);
        sb.append(", updateTime=").append(updateTime);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}